/**
 * 
 */
package cz.enif.console;

/**
 * Rozhraní pro vstup z klávesnice.
 * 
 * @author farap
 *
 */
public interface IKeyboardHandler 
{
	//// BUFFERED CHAR INPUT ////
	
	/** Vrací true, pokud je buffer klávesnice prázdný. */
	public boolean isCharBufferEmpty();
	
	/** Vrací znak z bufferu, nebo 0. */
	public char getChar();

	/** Vymaže obsah znakového bufferu. */
	public void flushCharBuffer();
	
	/** Vrací obsah bufferu jako řetězec. */
	public String getCharBufferContent();
	
	//// RAW KEY CONTROLL ////
	
	/**
	 * Zjistí, zda je klávesa s určitým kódem stisknutá.
	 * 
	 * @param keyCode
	 *            Kód klávesy, která se má ověřit (definovaný v KeyEvent).
	 * @return True, pokud je klávesa stisknuta.
	 */
	public boolean isKeyPressed(int keyCode);

	/**
	 * Nastaví stav klávesy.
	 * 
	 * @param keyCode
	 *            Kód klávesy, jejíž stav se má nastavit.
	 * @param state
	 *            Nový stav klávesy.
	 */
	public void setKeyState(int keyCode, boolean state);
}
